import { http } from "../../utils/netutils/http"

// 在模板页面获取模板,根据id查询，id可以不传，不传的时候就是查询的默认被当成模板的配置
function getLuckySheetConf (id) {
  return http({
    url: "/system/lineLoss/getTemp",
    method: "get",
    params: {
      id: id
    }
  }).then(res => {

    if (res.data.code === 200) {
      return {
        type: "change-luckySheetConfStr",
        payload: res.data.data
      }
    }
  })
}

// 在查看往期模板对话框中获取所有的模板列表
function getTempList () {
  return http({
    url: "http://localhost:8081/system/lineLoss/getTempList",
    method: "get"
  }).then(res => {
    if (res !== undefined) {
      return {
        type: "change-tempList",
        payload: res.data.data
      }
    }
  })
}

// 在模板列表中删除指定数据，使用id作为条件，如果后台说成功删除，就去redux中删除指定id的数据
function deleteTempById (id) {
  return http({
    url: "http://localhost:8081/system/lineLoss/deleteTemp",
    method: "post",
    data: {
      id: id
    }
  }).then(res => {
    // 删除成功时执行
    if (res.data.code === 200) {
      return {
        type: "delete-tempList",
        payload: id
      }
    }
  })
}

//注意，方法不可以使用use+后缀的写法，不然会被认为是hooks的写法，这样就不能写在页面的事件中，会报错，所以需要将方法名写成独一无二的风格
// 使用当前模板为正在使用,参数是正在查看的id，不可省略参数，否则后台会报错
function setTemp (id) {
  return http({
    url: "http://localhost:8081/system/lineLoss/useTemp",
    method: "post",
    data: {
      id: id
    },
  }).then(res => {
    // 删除成功时执行
    if (res.data.code === 200) {
      return {
        type: "change-stateId",
        payload: id
      }
    }
  })
}

// 保存模板的方法,需要正在查看的id，备注和配置,配置直接掺入json格式
function saveTemp (viewId, commitMsg, luckySheetConfigStr, updateDate) {
  return http({
    url: "http://localhost:8081/system/lineLoss/updateTemp",
    method: "post",
    data: {
      viewId: viewId,
      commitMsg: commitMsg,
      luckySheetConfigStr: JSON.stringify(luckySheetConfigStr),
      updateDate: updateDate
    }
  }).then(res => {
    // 此时传入的配置为空配置
    let option = {
      container: "luckysheet",
      lang: 'zh',
      showinfobar: false,
      data: luckySheetConfigStr
    }
    if (res.data.code === 200) {
      return {
        type: "change-saveData",
        payload: {
          luckySheetConfigStr: JSON.stringify(option),
          updateDate: updateDate
        }
      }
    }
  })
}

// 新建模板,先保存再创建
function createNewTemp (date, viewId, luckySheetConfigStr) {
  //http://localhost:8081/system/lineLoss/insertTemp
  return http({
    url: "http://localhost:8081/system/lineLoss/updateTemp",
    method: "post",
    data: {
      viewId: viewId,
      commitMsg: "自动保存",
      luckySheetConfigStr: JSON.stringify(luckySheetConfigStr),
      updateDate: date
    }
  }).then(res => {
    return http({
      url: "http://localhost:8081/system/lineLoss/insertTemp",
      method: "post",
      data: {
        insertDate: date,
        commitMsg: '新模板未修改',
        luckySheetConfigStr: "",
        isZero: false
      }
    }).then(res => {
      // 此时传入的配置为空配置
      let option = {
        container: "luckysheet",
        lang: 'zh',
        showinfobar: false,
      }
      return {
        type: "change-createTemp",
        payload: {
          luckySheetConfigStr: JSON.stringify(option),
          updateDate: date,
          viewId: res.data.data
        }
      }
    })
  })
}

// 当用户准备保存的时候保存备注
function changeSaveCommit (saveCommit) {
  return {
    type: "change-commit",
    payload: saveCommit
  }
}

//改变templist
function changeTempList (list) {
  return {
    type: "change-tempList",
    payload: list
  }
}

//修改表格配置
function changeTempOption (id, date, option) {
  return {
    type: "change-luckySheetConfStr",
    payload: {
      luckySheetConfigStr: option,
      id: id,
      insertDate: date
    }
  }
}
export {
  getLuckySheetConf,
  getTempList,
  deleteTempById,
  setTemp,
  createNewTemp,
  saveTemp,
  changeSaveCommit,
  changeTempList,
  changeTempOption
}